package clinivida.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * The persistent class for the pessoa database table.
 * 
 */
@Entity
@Table(name = "pessoa")
public class Pessoa implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int               id;

    private String            cpf;

    @Temporal(TemporalType.DATE)
    private Date              dataNascimento;

    @OneToOne(cascade=CascadeType.REMOVE)
    private Endereco          endereco;

    @ManyToOne
    private Estadocivil       estadoCivil;

    @OneToOne(cascade=CascadeType.REMOVE)
    private Medico            medico;

    private String            nome;

    @Lob()
    private String            observacao;

    private String            sexo;

    @OneToOne(mappedBy="pessoa",cascade=CascadeType.REMOVE)
    private Usuario           usuario;
    
    @ManyToMany(mappedBy="pessoas",fetch=FetchType.LAZY)
    private List<Consulta> listConsultas;

    public Pessoa()
    {
    }

    public void inicializaAtributos()
    {
        this.endereco = new Endereco();
        this.estadoCivil = new Estadocivil();
        this.usuario = new Usuario();
        this.medico = new Medico();
        this.medico.setEspecialidade(new Especialidade());
    }

    public int getId()
    {
        return this.id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getCpf()
    {
        return this.cpf;
    }

    public void setCpf(String cpf)
    {
        this.cpf = cpf;
    }

    public Date getDataNascimento()
    {
        return this.dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento)
    {
        this.dataNascimento = dataNascimento;
    }

    public String getNome()
    {
        return this.nome;
    }

    public void setNome(String nome)
    {
        this.nome = nome;
    }

    public String getObservacao()
    {
        return this.observacao;
    }

    public void setObservacao(String observacao)
    {
        this.observacao = observacao;
    }

    public String getSexo()
    {
        return this.sexo;
    }

    public void setSexo(String sexo)
    {
        this.sexo = sexo;
    }

    public void setEndereco(Endereco endereco)
    {
        this.endereco = endereco;
    }

    public Endereco getEndereco()
    {
        return endereco;
    }

    public void setEstadoCivil(Estadocivil estadoCivil)
    {
        this.estadoCivil = estadoCivil;
    }

    public Estadocivil getEstadoCivil()
    {
        return estadoCivil;
    }

    public void setMedico(Medico medico)
    {
        this.medico = medico;
    }

    public Medico getMedico()
    {
        return medico;
    }

    public void setUsuario(Usuario usuario)
    {
        this.usuario = usuario;
    }

    public Usuario getUsuario()
    {
        return usuario;
    }

    public void setListConsultas(List<Consulta> listConsultas)
    {
        this.listConsultas = listConsultas;
    }

    public List<Consulta> getListConsultas()
    {
        return listConsultas;
    }

}